/**
 * Created by Administrator on 2016/7/25.
 */
exports.book = {
    '书名': 'JavaScript 入门经典（第5版）',
    '扉页': ['译者序', '作者简介', '致谢', '前言'],
    '目录': [
        {
            '第1章': 'JavaScript 与 Web 概述',
            '1.1': 'JavaScript 简介',
            '1.1.1': 'JavaScript 的含义',
            '1.1.2': 'JavaScript 与 Web',
            '1.1.3': 'JavaScript 的功能',
            '1.1.4': [
                '创建 JavaScript Web 应用程序所需的工具',
                {'1': '开发工具'},
                {'2': 'Web 浏览器'}
            ],
            '1.2': '脚本的使用场合',
            '1.2.1': '链接外部 JavaScript 文件',
            '1.2.2': '使用外部文件的优点,',
            '1.3': '第一个简单的 JavaScript 程序',
            '1.4': '编写更多的 JavaScript 程序',
            '1.5': '浏览器和兼容性问题简述',
            '1.6': '小结'
        },
        {
            '第2章': '数据类型与变量',
            '2.1': 'JavaScript 中的数据类型',
            '2.1.1': '数值数据',
            '2.1.2': '文本数据',
            '2.1.3': '布尔数据',
            '2.2': '变量——存储在内存中的数据',
            '2.2.1': '创建变量并赋值',
            '2.2.2': '用其他变量的值为变量赋值',
            '2.3': '使用数据——计算数值及基本字符串操作',
            '2.3.1': '数值计算',
            '2.3.2': '运算符的优先级',
            '2.3.3': '基本字符串操作',
            '2.3.4': '字符串与数值的混合操作',
            '2.4': '数据类型转换',
            '2.5': '数组',
            '2.6': '小结',
            '2.7': '习题'
        },
        {
            '第3章': '决策与循环',
            '3.1': '决策语句——if 和 switch 语句',
            '3.1.1': [
                '比较运算符',
                {'1': '优先级'},
                {'2': '赋值运算符与比较运算符'},
                {'3': '将比较结果赋值给变量'}
            ],
            '3.1.2': 'if 语句',
            '3.1.3': [
                '逻辑运算符',
                {'1': 'AND'},
                {'2': 'OR'},
                {'3': 'NOT'}
            ],
            '3.1.4': '在 if 语句中使用多个条件',
            '3.1.5': 'else 和 else if',
            '3.1.6': '字符串的比较',
            '3.1.7': 'switch 语句',
            '3.2': '循环—— for 语句和 while 语句',
            '3.2.1': 'for 循环',
            '3.2.3': 'while 循环',
            '3.2.4': 'do...while 循环',
            '3.2.5': 'break 和 continue 语句',
            '3.3': '小结',
            '3.4': '习题'
        },
        {
            '第4章': '函数与作用域',
            '4.1': '创建自定义函数',
            '4.2': '作用域和生存期',
            '4.2.1': '全局作用域',
            '4.2.2': '函数作用域',
            '4.2.3': '标记符查找',
            '4.3': '将函数用用值',
            '4.4': '小结',
            '4.5': '习题'
        },
        {
            '第5章': 'JavaScript————基于对象的语言',
            '5.1': '基于对象的程序设计',
            '5.1.1': '对象的含义',
            '5.1.2': 'JavaScript 中的对象',
            '5.1.3': [
                '使用 JavaScript 对象',
                {'1': '创建对象'},
                {'2': '使用对象的属性'},
                {'3': '调用对象的方法'}
            ],
            '5.1.4': '基本数据类型与对象',
            '5.2': 'JavaScript 的内置对象类型',
            '5.2.1': [
                'String 对象',
                {'1': 'length 属性'},
                {'2': 'indexOf() 和 lastIndexOf() 方法——在一个字符串中查找另一个字符串'},
                {'3': 'substr() 和 substring() 方法——复制字符串的一个子串'},
                {'4': 'toLowerCase() 和 toUpperCase() 方法——转换大小写'},
                {'5': 'charAt() 和 charCodeAt() 方法——从字符串中选取一个字符'},
                {'6': 'fromCharCode() 方法——将字符编码转换为字符串'},
                {'7': 'trim() 方法——去掉字符串两端的空格'}
            ],
            '5.2.2': [
                'Array 对象',
                {'1': 'length 属性——获得数组中元素的个数'},
                {'2': 'push() 方法——添加元素'},
                {'3': 'concat() 方法——连接数组'},
                {'4': 'slice() 方法——复制数组的一部分'},
                {'5': 'join() 方法——将数组转换为单个字符串'},
                {'6': 'sort() 方法——对数组排序'},
                {'7': 'reverse() 方法——反转数组元素的顺序'},
                {'8': 'indexOf() 和 lastIndexOf() 方法——查找数组元素'},
                {'9': '迭代数组，但不使用循环'},
                {'9.1': 'every()、some() 和 filter() 方法——测试每个元素'},
                {'9.2': 'forEach() 和 map() 方法——操作元素'}
            ],
            '5.2.3': [
                'Math 对象',
                {'1': 'abs() 方法'},
                {'2': 'min() 和 max() 方法——查找最大值和最小值'},
                {'3': '舍入方法'},
                {'3.1': 'ceil() 方法'},
                {'3.2': 'floor() 方法'},
                {'4': 'round() 方法'},
                {'5': 'random() 方法'},
                {'6': 'pow() 方法'}
            ],
            '5.2.4': 'Number 对象',
            '5.2.5': 'toFiexed() 方法',
            '5.2.6': [
                'Date 对象',
                {'1': '创建 Date 对象'},
                {'2': '获得日期值'},
                {'3': '设置日期'},
                {'4': '日期的计算'},
                {'5': '获得时间值'},
                {'6': '设置时间值'}
            ],
            '5.3': '创建自定义对象',
            '5.4': [
                '创建对象的新类型（引用类型）',
                {'1': '定义引用类型'},
                {'2': '创建和使用引用类型的实例'}
            ],
            '5.5': '小结',
            '5.6': '习题'
        },
        {
            '第6章': '字符串操作',
            '6.1': '新的字符串方法',
            '6.1.1': 'split() 方法',
            '6.1.2': 'replace() 方法',
            '6.1.3': 'search() 方法',
            '6.1.4': 'match() 方法',
            '6.2': '正则表达式',
            '6.2.2': [
                '正则表达式：特殊字符',
                {'1': '文本、数字和标点符号'},
                {'2': '重复字符'},
                {'3': '位置字符'}
            ],
            '6.2.3': '包含所有的可能性',
            '6.2.4': '正则表达式的分组',
            '6.2.5': '重用字符组',
            '6.3': 'String 对象',
            '6.3.1': 'split() 方法',
            '6.3.2': 'replace() 方法',
            '6.3.3': 'search() 方法',
            '6.3.4': 'match() 方法',
            '6.4': '使用 RegExp 对象的构造函数',
            '6.4.1': '验证电话号码',
            '6.4.2': '验证邮政编码',
            '6.4.3': '验证电子邮件地址',
            '6.4.4': [
                '验证域名',
                {'1': '验证用户的地址'},
                {'2': '验证完整的地址'}
            ],
            '6.5': '小结',
            '6.6': '习题'
        },
        {
            '第7章': '日期、时间和计时器',
            '7.1': '世界时',
            '7.2': '网页中的计时器',
            '7.2.1': '一次性计时器',
            '7.2.2': '创建定期触发的计时器',
            '7.3': '小结',
            '7.4': '习题'
        },
        {
            '第8章': '浏览器程序设计',
            '8.1': '浏览器对象简介',
            '8.1.1': 'window 对象',
            '8.1.2': 'history 对象',
            '8.1.3': 'location 对象',
            '8.1.4': 'navigator 对象',
            '8.1.5': 'screen 对象',
            '8.1.6': 'document 对象',
            '8.1.7': '使用 document 对象',
            '8.1.8': 'images 集合',
            '8.1.9': 'links 集合',
            '8.2': '确定用户浏览器',
            '8.2.1': '特性检测',
            '8.2.2': '浏览器嗅探',
            '8.3': '小结',
            '8.4': '习题'
        },
        {
            '第9章': '编写 DOM 脚本',
            '9.1': 'Web 标准',
            '9.1.1': 'HTML',
            '9.1.2': 'ECMAScript',
            '9.2': '文档对象模型',
            '9.2.1': [
                'DOM 标准 ',
                {'1': '0 级(Level 0)'},
                {'2': '1 级(Level 1)'},
                {'3': '2 级(Level 2)'},
                {'4': '3 级(Level 3)'},
                {'5': '4 级(Level 4)'},
                {'6': '浏览器对标准的支持'}
            ],
            '9.2.2': 'DOM 与 BOM 的区别',
            '9.2.3': [
                '将 HTML 文档表示为树型结构',
                {'1': '树型结构'},
                {'2': 'HTML 页面示例'}
            ],
            '9.2.4': [
                'DOM 核心对象',
                {'1': '基本的 DOM 对象'},
                {'2': 'DOM 对象及其属性和方法'}
            ],
            '9.2.5': [
                'DOM 对象及其属性和方法',
                {'1': 'Document 对象及其方法'},
                {'2': 'Element 对象'},
                {'3': 'Node 对象'},
                {'4': 'Node 对象的方法'}
            ],
            '9.3': '操作 DOM',
            '9.3.1': '访问元素',
            '9.3.2': [
                '改变元素的外观',
                {'1': '使用 style 属性'},
                {'2': '修改 class 属性'}
            ],
            '9.3.3': '定位和移动内容',
            '9.3.4': [
                '示例：动态广告',
                {'1': '确定内容的当前位置'},
                {'2': '实现动画效果'}
            ],
            '9.4': '小结',
            '9.5': '习题'
        },
        {
            '第10章': '事件',
            '10.1': '事件的类型',
            '10.2': [
                '将代码连接到事件',
                {'1': '通过 HTML 属性处理事件'},
                {'2': '通过对象属性处理事件'}
            ],
            '10.3': '标准事件模型',
            '10.4': '旧版本 IE 中的事件处理',
            '10.5': '编写跨浏览器的代码',
            '10.6': '内置拖放操作',
            '10.6.1': '使内容可以拖动',
            '10.6.2': '创建释放目标',
            '10.6.3': '传输数据',
            '10.7': '小结',
            '10.8': '习题'
        },
        {
            '第11章': 'HTML 表单: 与用户交互',
            '11.1': 'HTML 表单',
            '11.2': '传统 Form 对象的属性和方法',
            '11.2.1': '表单中的 HTML 元素',
            '11.2.2': [
                '共有的属性和方法',
                {'1': 'name 属性'},
                {'2': 'value 属性'},
                {'3': 'form 属性'},
                {'4': 'type 属性'},
                {'5': 'focus() 和 blur() 方法'}
            ],
            '11.2.3': '按钮元素',
            '11.2.4': [
                '文本元素',
                {'1': '文本框'},
                {'2': 'Firefox 和 blur 事件的问题'},
                {'3': '密码文本框'},
                {'4': '隐藏文本框'}
            ],
            '11.2.5': 'textarea 元素',
            '11.2.6': '复选框和单选按钮',
            '11.2.7': [
                '选择框',
                {'1': '添加和删除选项'},
                {'2': '用标准方法添加新选项'},
                {'3': '选择元素的事件'}
            ],
            '11.3': 'HTML5 表单对象的属性和方法',
            '11.3.1': '新的输入类型',
            '11.3.2': [
                '新元素',
                {'1': '<output/> 元素'},
                {'2': '<meter/> 和 <progress/> 元素'}
            ],
            '11.4': '小结',
            '11.5': '习题'
        },
        {
            '第12章': 'JSON',
            '12.1': 'XML',
            '12.2': 'JSON',
            '12.2.1': '简单值',
            '12.2.2': '对象',
            '12.2.3': '数组',
            '12.2.4': '串行化为 JSON',
            '12.2.5': '解析 JSON',
            '12.3': '小结',
            '12.4': '习题'
        },
        {
            '第13章': '数据存储',
            '13.1': '烘焙第一个 cookie',
            '13.1.1': [
                '新鲜出炉的 cookie',
                {'1': '在 IE 中查看 cookie'},
                {'2': '在 Firefox 中查看 cookie'},
                {'3': '在 Chrome 中查看 cookie'}
            ],
            '13.1.2': [
                'cookie 字符串',
                {'1': '名称和值'},
                {'2': '过期时间'},
                {'3': '路径'},
                {'4': '域'},
                {'5': '安全性'}
            ],
            '13.2': '创建 cookie',
            '13.3': '获取 cookie 的值',
            '13.4': 'cookie 的局限性',
            '13.4.1': '用户可能禁用 cookie',
            '13.4.2': '数字和信息的限制',
            '13.5': 'cookie 的安全性和 IE',
            '13.6': 'Web 存储',
            '13.6.1': '设置数据',
            '13.6.2': '获取数据',
            '13.6.3': '删除数据',
            '13.6.4': '把数据存储为字符串',
            '13.6.5': '查看 Web 存储的内容',
            '13.7': '小结',
            '13.8': '习题'
        },
        {
            '第14章': 'AJAX',
            '14.1': 'Ajax 的含义',
            '14.1.1': [
                'Ajax 的作用',
                {'1': 'Google Maps'},
                {'2': 'Google Suggest'}
            ],
            '14.1.2': '浏览器支持',
            '14.2': '使用 XMLHttpRequest 对象',
            '14.2.1': '创建 XMLHttpRequest 对象',
            '14.2.2': '使用 XMLHttpRequest 对象',
            '14.2.3': '异步请求',
            '14.3': '创建简单的 Ajax 模块',
            '14.3.1': '规划 HttpRequest 模块',
            '14.3.2': 'HttpRequest 构造函数',
            '14.3.3': '创建 send() 方法',
            '14.3.4': '完整代码',
            '14.4': '使用 Ajax 验证表单字段',
            '14.4.1': '请求信息',
            '14.4.2': '接收到的数据',
            '14.4.3': [
                '准备工作',
                {'1': 'Web 服务器'},
                {'2': 'PHP'}
            ],
            '14.5': '注意事项',
            '14.5.1': [
                '安全性问题',
                {'1': '同源策略'},
                {'2': 'CORS'}
            ],
            '14.5.2': [
                '可用性问题',
                {'1': '浏览器的 Back 按钮'},
                {'2': '使用内嵌框架创建支持 Back 和 Forward 按钮的表单'},
                {'3': '服务器响应'},
                {'4': '处理延迟'},
                {'5': '在 Ajax 失败时正常退出'}
            ],
            '14.6': '小结',
            '14.7': '习题'
        },
        {
            '第15章': 'HTML5 媒体',
            '15.1': '入门',
            '15.2': '给媒体编写脚本',
            '15.2.1': '方法',
            '15.2.2': '属性',
            '15.2.3': '事件',
            '15.3': '小结',
            '15.4': '习题'
        },
        {
            '第16章': 'jQuery',
            '16.1': '获得 jQuery',
            '16.2': 'jQuery 的 API',
            '16.2.1': '选择元素',
            '16.2.2': [
                '修改样式',
                {'1': '添加和删除 CSS 类'},
                {'2': '切换类'},
                {'3': '检查对象是否存在'}
            ],
            '16.2.3': [
                '创建、追加和删除元素',
                {'1': '创建元素'},
                {'2': '追加元素'},
                {'3': '删除元素'}
            ],
            '16.2.4': '处理事件',
            '16.2.5': '用 jQuery 重写选项卡',
            '16.2.6': [
                '把 jQuery 用于 Ajax',
                {'1': '理解 jQuery 函数'},
                {'2': '自动解析 JSON 数据'},
                {'3': 'jqXHR 对象'}
            ],
            '16.3': '小结'
        },
        {
            '第17章': '其他 JavaScript 库',
            '17.1': 'Modernizr',
            '17.1.1': '获得 Modernizr',
            '17.1.2': 'Modernizr 的 API',
            '17.1.3': '自定义测试',
            '17.1.4': '加载资源',
            '17.2': 'Prototype',
            '17.2.1': '获得 Prototype',
            '17.2.2': '测试 Prototype 安装',
            '17.2.3': [
                '检索元素',
                {'1': '用 CSS 选择器选择元素'},
                {'2': '对 $$() 选择出来的元素执行操作'}
            ],
            '17.2.4': '处理样式',
            '17.2.5': [
                '创建、插入删除元素',
                {'1': '创建元素'},
                {'2': '插入元素'},
                {'2': '删除元素'}
            ],
            '17.2.6': '使用事件',
            '17.2.7': '用 Prototype 重写选项卡',
            '17.2.8': '使用 Ajax 支持',
            '17.3': 'MooTools',
            '17.3.1': '获得 MooTools',
            '17.3.2': '测试 MooTools 安装',
            '17.3.3': [
                '查找元素',
                {'1': '用 CSS 选择器选择元素'},
                {'2': '对元素执行操作'}
            ],
            '17.3.4': '修改样式',
            '17.3.5': '创建、插入和删除元素',
            '17.3.6': '使用事件',
            '17.3.7': '用 MooTools 重写选项卡',
            '17.3.8': 'MooTools 中的 Ajax 支持',
            '17.4': '小结',
            '17.5': '习题'
        },
        {
            '第18章': '常见错误、调试和错误处理',
            '18.1': '一些常见错误',
            '18.1.1': '未经定义的变量',
            '18.1.2': '区分大小写',
            '18.1.3': '不匹配的大括号',
            '18.1.4': '不匹配的圆括号',
            '18.1.5': '赋值 (=) 而不是相等 (==)',
            '18.1.6': '将方法和属性混为一谈',
            '18.1.7': '在连接字符串时未使用加号 (+)',
            '18.2': '错误处理',
            '18.2.1': '避免错误',
            '18.2.2': [
                'try...catch 语句',
                {'1': '抛出错误'},
                {'2': '嵌套的 try...catch 语句'},
                {'3': 'finally 子句'}
            ],
            '18.3': '调试',
            '18.3.1': [
                '在 Chrome (和 Opera) 中调试',
                {'1': 'Scope 变量和观察窗口'},
                {'2': '单步调试代码'},
                {'3': '控制台'}
            ],
            '18.3.2': [
                '在 Internet Explorer 中调试',
                {'1': '设置断点'},
                {'2': '添加要观察的变量'},
                {'3': '单步调试代码'},
                {'4': '控制台'}
            ],
            '18.3.3': [
                '在 Firefox 中使用 Firebug 调试',
                {'1': '设置断点'},
                {'2': '观察窗口'},
                {'3': '单步调试代码'},
                {'4': '控制台'}
            ],
            '18.3.4': [
                '在 Safari 中调试',
                {'1': '设置断点'},
                {'2': '添加观察窗口'},
                {'3': '单步调试代码'},
                {'4': '控制台'}
            ],
            '18.4': '小结',
            '18.5': '习题'
        }
    ],
    '附录': [
        {'A': '参考答案'},
        {'B': 'JavaScript 核心参考'},
        {'C': 'W3C DOM 参考'},
        {'D': 'Latin-1 字符集'}
    ]
};
